第2章 可行性研究
第2章 可行性研究
2.1 可行性研究的任务
可行性研究的目的,就是用最小的代价在尽可能短的时间内确定问题是否能够解决,不是解决问题,而是确定问题是否值得去解决。
可行性研究实质上是要进行一次大大压缩简化了的系统分析和设计的过程,也就是在较高层次上以比较抽象的方式进行的系统分析和设计的过程。
可行性研究最根本的任务是对以后的行动方针提出建议
可行性研究的内容:
- 首先需要进一步分析和澄清问题定义,导出系统的逻辑模型
- 然后从系统逻辑模型出发,探索若干种可供选择的主要解法(即系统实现方案)
- 对每种解法都研究它的可行性,至少应该从三方面研究每种解法的可行性
主要方面:
- 技术可行性,使用现有的技术能实现这个系统吗?
- 经济可行性,这个系统的经济效益能超过它的开发成本吗?
- 操作可行性,系统的操作方式在这个用户组织内行得通吗?
其他方面:
- 运行可行性,系统的运行方式是否可行?
- 法律可行性,系统是否侵犯他人、集体或国家的利益,是否违反法律?
- 分析员应该为每个可行的解法制定一个粗略的实现进度。
- 如果问题没有可行的解,分析员应该建议停止这项开发工程,以避免时间、资源、人力和金钱的浪费;如果问题值得解,分析员应该推荐一个较好的解决方案,并且为工程制定一个初步的计划。
- 可行性研究需要的时间长短取决于工程的规模。一般说来,可行性研究的成本只是预期的工程总成本的5%~10%。
2.2 可行性研究过程
复查系统规模和目标:对问题定义阶段书写的关于规模和目标的报告书进一步复查确认。
研究目前正在使用的系统:新的目标系统必须也能完成旧系统的基本功能;另一方面,新系统必须能解决旧系统中存在的问题。
导出新系统的高层逻辑模型:现有的物理系统→现有系统的逻辑模型→目标系统的逻辑模型→新的物理系统
进一步定义问题:分析员应该和用户一起再次复查问题定义、工程规模和目标。
可行性研究的前4个步骤实质上构成一个循环。
导出和评价供选择的解法:
1、首先从技术角度出发排除不可行方案;
2、其次考虑操作可行性,去掉用户不能接受的方案;
3、接下来考虑经济可行性,估计余下的每个可能的系统的开发成本和运行费用,进行成本/效益分析;
4、最后为每个在各方面都可行的系统制定实现进度表(如下图)。
推荐行动方针:根据可行性研究结果应该做出的一个关键性决定是,是否继续进行这项开发工程。若继续开发,选择一种最好的解法,说明选择这个解决方案的理由。
草拟开发计划:分析员应该为所推荐的方案草拟一份开发计划,制定工程进度表、估计对各类开发人员和各种资源的需要情况、估计系统生命周期每个阶段的成本、给出下一个阶段(需求分析)的详细进度表和成本估计。
书写文档提交审查:把可行性研究各个步骤的工作结果写成清晰的文档,请用户、客户组织的负责人及评审组审查,以决定是否继续这项工程及是否接受分析员推荐的方案。
2.3 系统流程图
概念:
- 系统流程图是概括地描绘物理系统的传统工具。
- 它用图形符号以黑盒子形式描绘组成系统的每个部件(程序,文档,数据库,人工过程等)。
- 它表达的是数据在系统各部件之间流动的情况,而不是对数据进行加工处理的控制过程。
- 它是物理数据流图而不是程序流程图。
符号:
基本符号:以概括性的方式抽象地描绘一个实际系统
系统符号:具体地描绘一个物理系统所用的符号
步骤
- 分析:部件、程序、文档、数据、人工过程
- 画流程图
分层
- 面对复杂的系统 ----分层描绘
- 首先用一张高层次的系统流程图描绘系统总体概貌,表明系统的关键功能。
- 然后分别把每个关键功能扩展到适当的详细程度,画在单独的一页纸上。
- 便于阅读者按从抽象到具体的过程逐步深入地了解一个复杂的系统。
2.4 数据流图
概念:数据流图是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。在数据流图中没有任何具体的物理部件,它只是描绘数据在软件中流动和被处理的逻辑过程。
符号:
4种基本符号:
附加符号:
画数据流图的步骤:
- 从问题描述中提取数据流图的四种成分
- 画基本系统模型
- 细化,描述系统的主要功能(功能级数据流图)
- 对系统主要功能进一步细化
细化时注意:
- 当进一步分解涉及如何具体的实现一个功能时就不应该再分解了。
- 当对数据流图分层细化时必须保持信息连续性,也就是说,当把一个处理分解为一系列处理时,分解前和分解后的输入输出数据流必须相同。
- 注意对处理进行编号的方法。
命名
为数据流(或数据存储)命名:
- 完整性,名字应代表整个数据流(或数据存储)的内容
- 具体性,不要用空洞的、缺乏具体含义的名字
- 起名字遇到了困难时,试试重新分解
为处理命名:
- 通常先为数据流命名,然后再为与之相关联的处理命名
- 完整性,名字应该反映整个处理的功能
- 及物动词+宾语,具体性
- 通常名字中仅包含一个动词,否则进行分解
- 命名遇到了困难时,应考虑重新分解
为数据源点/终点命名:采用它们在问题域中习惯的名字
用途
基本目的是利用它作为交流信息的工具:
- 供有关人员审查确认
- 供用户理解和评价
- 数据流图应该分层,超过9个时应该画分图
另一个主要用途是作为分析和设计的工具:
- 描述系统所完成的功能
- 辅助物理系统的设计时,以定时要求为指南,画出许多组自动化边界,对应不同的物理系统
- 导出更详细的设计步骤——面向数据流的设计方法
数据存储和数据流都是数据,仅仅所处的状态不同。数据存储是出于静止状态的数据,数据流是处于运动中的数据。
2.5 数据字典
数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。
数据字典的作用也正是在软件分析和设计的过程中给人提供关于数据的描述信息。
数据流图和数据字典共同构成系统的逻辑模型,没有数据字典,数据流图就不严格,然而没有数据流图,数据字典也难于发挥作用。只有数据流图和对数据流图中每个元素的精确定义放在一起,才能共同构成系统的规格说明。
数据字典由4类元素的定义组成:
数据流
- 说明:简要介绍作用,即它产生的原因和结果
- 数据流来源:即该数据流来自何方
- 数据流去向:去向何处
- 数据流组成:数据结构
- 每个数据量流通量:数据量、流通量
数据流分量(即数据元素)
- 类型:数字(离散值、连续值),文字(编码类型)
- 长度
- 取值范围
- 相关的数据元素及数据结构
数据存储
处理
在数据字典中记录数据元素的下列信息:
- 一般信息
- 定义
- 使用特点
- 控制信息
- 分组信息
定义数据的方法
方法:对数据自顶向下分解
数据组成方式:
- 顺序,以确定次序连接两个或多个分量
- 选择,从两个或多个可能的元素中选取一个
- 重复,把指定的分量重复零次或多次
- 附加类型:可选,一个分量是可有可无的(重复零次或一次)
符号:
=意思是等价于(或定义为);
+意思是和(即,连接两个分量);
[ ]意思是或(即,从方括弧内列出的若干个分量中选择一个),通常用“|”号隔开供选择的分量;
{ }意思是重复(即,重复花括弧内的分量);常常使用上限和下限进一步注释表示重复的花括弧。
( )意思是可选(即,圆括弧里的分量可有可无)。
数据字典的用途
数据字典最重要的用途是作为分析阶段的工具;
数据字典中包含的每个数据元素的控制信息是很有价值的。很容易估计改变一个数据将产生的影响;
数据字典是开发数据库的第一步,而且是很有价值的一步。
数据字典的实现
- 计算机实现,目前,数据字典几乎总是作为CASE(计算机辅助软件工程)“结构化分析与设计工具”的一部分实现的。在开发大型软件系统的过程中,数据字典的规模和复杂程度迅速增加,人工维护数据字典几乎是不可能的。
- 人工实现,采用卡片形式书写数据字典,每张卡片上保存描述一个数据的信息。每张卡片上主要应该包含下述这样一些信息:名字、别名、描述、定义、位置。
2.6成本/效益分析
成本估计
- 代码行技术
- 任务分解技术
- 自动估计成本技术
成本/效益分析的方法
- 货币的时间价值
- 投资回收期
- 纯收入
- 投资回收率